<?php
/**
 * 城市管理模块.
 * User: 1874
 * Date: 2019/5/8
 * Time: 15:05
 */

namespace app\adminplatform\controller;

use app\adminplatform\model\AuthGroup;
use app\adminplatform\model\City as CityModel;
use app\adminplatform\model\Log;
use think\facade\Request;
use think\facade\Session;
use think\facade\View;

class City extends Initial {
    /*
     * 城市列表
     */
    public function cityList(){
        $map = [];
        //城市名
        if(input('name')) $map[] = ['ci_name','like','%'.input('name').'%'];
        //父id
        if(input('pid')){
            $cid = input('pid');
            $map[] = ['ci_pid','=',input('pid')];
        }else{
            $cid = 0;
            $map[] = ['ci_pid','=',1];
        }
        //查找所有上级城市
        $parent = CityModel::getParentCityAll($cid, 'ci_name', 1);
        //一级城市
        $info = CityModel::getCityPage($map);
        //管理员权限
        $rules = [
            'City/cityAdd', 'City/cityEdit', 'City/cityDel', 'City/cityDelAll',
        ];
        $check = AuthGroup::checkMethodArray(Session::get('userData'), $rules);

        View::assign('info',$info);
        View::assign('parent',$parent);
        View::assign('check',$check);
        return View::fetch('cityList');
    }
    /*
     * 城市新增
     */
    public function cityAdd(){
        input('pid') ? $pid = input('pid') : $pid = 1;
        //提交
        if(Request::isPost()){
            $request = input();
            $map['ci_name']  = $request['name'];
            $map['ci_pid']  = $pid;
            $map['ci_type']  = $request['type'] + 1;
            //检查字段是否为空
            checkField($map);
            //新增信息
            $info = CityModel::create($map);
            if($info){
                //写入日志
                Log::logAdd(Session::get('userData.ad_id'),'新增城市【'.$map['ci_name'].'】');

                $data = ['info'=>'新增成功','status'=>1];
            }else{
                $data = ['info'=>'不好意思，信息没有改变','status'=>0];
            }
            return json($data);
        }
        //上级城市
        $parent = CityModel::getCityInfo(["ci_id"=>$pid]);

        View::assign('pid',$pid);
        View::assign('parent',$parent);
        return View::fetch('cityAdd');
    }
    /*
     * 城市编辑
     */
    public function cityEdit(){
        $id = input('id');
        //提交
        if(Request::isPost()){
            $request = input();
            $map['ci_id']  = $request['id'];
            $map['ci_name']  = $request['name'];
            //检查字段是否为空
            checkField($map);
            //修改信息
            $info = CityModel::update($map, ["ci_id"=>$map["ci_id"]]);
            if($info){
                //写入日志
                Log::logAdd(Session::get('userData.ad_id'),'修改城市【'.$map['ci_name'].'】');

                $data = ['info'=>'修改成功','status'=>1];
            }else{
                $data = ['info'=>'不好意思，信息没有改变','status'=>0];
            }
            return json($data);
        }
        //查询
        $info = CityModel::getCityInfo(["ci_id"=>$id], 1);

        View::assign('info',$info);
        return View::fetch('cityEdit');
    }
    /*
     * 城市删除
     */
    public function cityDel(){
        //判断请求类型
        if(!Request::isPost()){
            $data = ['info'=>'请求类型不是这个哦，亲','status'=>0];
        }else{
            $id = input('id');
            //查询是否还有子城市
            $children = CityModel::getCityInfo(["ci_pid"=>$id], 2);
            if($children > 0){
                $data = ['info'=>'该城市所属下还有下级城市，无法删除','status'=>0];
                return json($data);
            }
            //查询
            $city = CityModel::getCityInfo(["ci_id"=>$id]);
            //删除信息
            $info = $city->delete();
            if($info){
                //写入日志
                Log::logAdd(Session::get('userData.ad_id'),'删除城市【'.$city->ci_name.'】');

                $data = ['info'=>'删除成功','status'=>1];
            }else{
                $data = ['info'=>'不好意思，删除失败了','status'=>0];
            }
        }

        return json($data);
    }
    /*
     * 城市批量删除
     */
    public function cityDelAll(){
        //判断请求类型
        if(!Request::isPost()){
            $data = ['info'=>'请求类型不是这个哦，亲','status'=>0];
        }else{
            $ids = input('ids');
            //权限下方是否还有所属下级权限
            foreach ($ids as $value){
                //是否有下级权限
                $child = CityModel::getCityInfo(["ci_pid"=>$value], 2);
                if ($child) {
                    $name = CityModel::getCityInfo(["ci_id"=>$value])->ci_name;
                    $data = ['info' => '【' . $name . '】还有下级城市，无法删除', 'status' => 0];
                    return json($data);
                }
            }
            //删除信息
            $info = CityModel::where("ci_id", "in", $ids)->delete();
            if($info){
                //写入日志
                Log::logAdd(Session::get('userData.ad_id'),'删除城市'.$info.'条');

                $data = ['info'=>'删除成功','status'=>1];
            }else{
                $data = ['info'=>'不好意思，删除失败了','status'=>0];
            }
        }

        return json($data);
    }
}